/* 
 登录
 
 // 微信公众号H5登录
 // 这个写法在本地开发调试，因为本地运行路径不是微信公众平台配置的安全域名
 // 会报错误：redirect_uri 参数错误，建议使用服务端进行获取code登录
 import { useLogin } from '@/hooks/useLogin.js'
 const { weixinH5Login } = useLogin()
 onLoad(options => {
 	weixinH5Login()
 })
 
 调用服务端接口写法
 onLoad(options => {
 	if (options.openid == null) {
 		var url = window.location.href
 		url = encodeURIComponent(url)
 		//请求后台进行跳转
 		location.href = "服务端接口api?returnUrl=" + url
		// 服务端登录成功回调openID
		// url?openid=xxx
 	} else {
		this.sjuLogin.saveValue("openID", options.openid)
	}
 })
 */
import * as appConfig from '@/config/config'

const useLogin = () => {
	/**
	 * @description App第三方授权登录
	 * @param {string} type 授权登录平台 
	 * weixin		微信登录			qq			QQ登录
	 * sinaweibo	新浪微博登录		xiaomi		小米登录
	 * univerify	一键登录			apple		苹果登录
	 * google		谷歌登录			facebook	Facebook登录
	 * @param {function} callback 成功回调
	 * @param {function} errorCallback 失败回调
	*/
	const oauthLogin = (type, callback, errorCallback) => {
		uni.login({
			provider: type,
			success: res => {
				// 获取用户信息
				uni.getUserInfo({
					provider: type,
					success: infoRes =>{
						// 登录成功
						callback && callback(infoRes)
					}
				})
			},
			fail: res => {
				// 登录失败
				errorCallback && errorCallback(res)
			}
		})
	}
	
	/**
	 * @description 小程序授权登录
	 * @param {string} provider 服务提供商
	 * @param {function} callback 成功回调
	 * @param {function} errorCallback 失败回调
	*/
	const miniLogin = (provider, callback, errorCallback) => {
		uni.getProvider({
			service: 'oauth',
			success: provider => {
				let providerInfo = provider.provider
				uni.login({
					provider: providerInfo,
					success: res => {
						// 登录成功
						callback && callback(res)
					},
					fail: res => {
						// 登录失败
						errorCallback && errorCallback(res)
					}
				})
			}
		})
	}
	
	// 微信H5登录
	const weixinH5Login = (callback, errorCallback) => {
		if (isWechat()) {
		    // 公众号登录
		    var local = encodeURIComponent(window.location.href)
		    var url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appConfig.appInfo.appId + '&redirect_uri=' + local + '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
		    var code = getUrlParam('code')
		    if (!code) {
		        window.location = url
		    } else {
				callback && callback(code)
		    }
		} else {
			errorCallback && errorCallback(500)
		}
	}
	
	// 获取链接参数
	function getUrlParam(name) {
	    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
	    var r = window.location.search.substr(1).match(reg)
	    if (r !== null) return decodeURIComponent(r[2])
	    return null
	}
	
	// 浏览器判断是否微信
	const isWechat = () => {
		let ua = navigator.userAgent.toLowerCase()
		if (ua.match(/MicroMessenger/i) == 'micromessenger') {
			return true 
		}else{
	        return false
	    }
	}
	
	return { oauthLogin, miniLogin, weixinH5Login }
}

export { useLogin }